{"componentChunkName":"component---src-templates-post-tsx","path":"/babel/","result":{"data":{"markdownRemark":{"html":"<ul>\n<li>Babel이란?</li>\n<li>Babel 사용해보기</li>\n</ul>\n<hr>\n<h2 id=\"babel이란\" style=\"position:relative;\"><a href=\"#babel%EC%9D%B4%EB%9E%80\" aria-label=\"babel이란 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Babel이란?</h2>\n<p><strong>Babel은 JavaScript 컴파일러이다.</strong>\n즉, 최신 사양의 자바스크립트 코드를 IE나 구형 브라우저에서도 동작하는 ES5 이하의 코드로 변환하는 트랜스파일러라고 보면 된다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// ES6 화살표 함수와 ES7 지수 연산자</span>\n<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">n</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> n <span class=\"token operator\">**</span> n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Babel은 위와 같은 코드를 아래와 같이 변환한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// ES5</span>\n<span class=\"token punctuation\">(</span><span class=\"token string\">'use strict'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">n</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> Math<span class=\"token punctuation\">.</span><span class=\"token function\">pow</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<hr>\n<h2 id=\"babel-사용해보기\" style=\"position:relative;\"><a href=\"#babel-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0\" aria-label=\"babel 사용해보기 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Babel 사용해보기</h2>\n<h3 id=\"1-사용하기-전-준비\" style=\"position:relative;\"><a href=\"#1-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%A0%84-%EC%A4%80%EB%B9%84\" aria-label=\"1 사용하기 전 준비 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 사용하기 전 준비</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">npm</span> <span class=\"token function\">install</span> --save-dev @babel/core @babel/cli @babel/preset-env</code></pre></div>\n<p>설치가 완료되었으면 프로젝트 루트에 <code class=\"language-text\">.babelrc</code> 파일을 생성하고 아래와 같이 작성한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token comment\">// 지금 설치한 @babel/preset-env를 사용하겠다는 의미이다.</span>\n<span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"presets\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"@babel/preset-env\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"2-babelpreset-env는-뭐지\" style=\"position:relative;\"><a href=\"#2-babelpreset-env%EB%8A%94-%EB%AD%90%EC%A7%80\" aria-label=\"2 babelpreset env는 뭐지 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. @babel/preset-env는 뭐지?</h3>\n<p><code class=\"language-text\">@babel/preset-env</code>는 필요한 플러그인들을 프로젝트 지원 환경에 맞춰서 동적으로 결정해준다.<br>\n즉, 함께 사용되어야하는 Babel 플러그인을 모아 둔 것이다.<br>\n이를 <strong>Babel 프리셋</strong>이라고 부르며, Babel이 제공하는 공식 Babel 프리셋은 아래와 같다.</p>\n<ul>\n<li>@babel/preset-env</li>\n<li>@babel/preset-flow</li>\n<li>@babel/preset-react</li>\n<li>@babel/preset-typescript</li>\n</ul>\n<h3 id=\"3-npm-script를-사용해-트랜스파일링-하기\" style=\"position:relative;\"><a href=\"#3-npm-script%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4-%ED%8A%B8%EB%9E%9C%EC%8A%A4%ED%8C%8C%EC%9D%BC%EB%A7%81-%ED%95%98%EA%B8%B0\" aria-label=\"3 npm script를 사용해 트랜스파일링 하기 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. npm script를 사용해 트랜스파일링 하기</h3>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token comment\">// package.json 파일에 build를 추가한다.</span>\n<span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"es6-project\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1.0.0\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"scripts\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"build\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"babel src/js -w -d dist/js\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"devDependencies\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"@babel/cli\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"^7.7.0\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"@babel/core\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"^7.7.2\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"@babel/preset-env\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"^7.7.1\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<ul>\n<li><code class=\"language-text\">-w</code> : 타킷 폴더에 있는 모든 파일들의 변경을 감지해 자동으로 트랜스파일한다.(<code class=\"language-text\">--watch</code> 옵션의 축약형)</li>\n<li><code class=\"language-text\">-d</code> : 트랜스파일링 된 결과물이 저장될 폴더를 지정한다(<code class=\"language-text\">--out-dir</code> 옵션의 축약형)</li>\n</ul>\n<hr>\n<h4 id=\"reference\" style=\"position:relative;\"><a href=\"#reference\" aria-label=\"reference permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Reference</h4>\n<ul>\n<li><a href=\"https://poiemaweb.com/es6-babel-webpack-1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://poiemaweb.com/es6-babel-webpack-1</a></li>\n</ul>","excerpt":"Babel이란? Babel 사용해보기 Babel이란? Babel은 JavaScript 컴파일러이다.\n즉, 최신 사양의 자바스크립트 코드를 IE나 구형 브라우저에서도 동작하는 ES5 이하의 코드로 변환하는 트랜스파일러라고 보면 된다. Babel은 위와…","tableOfContents":"<ul>\n<li><a href=\"/babel/#babel%EC%9D%B4%EB%9E%80\">Babel이란?</a></li>\n<li>\n<p><a href=\"/babel/#babel-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0\">Babel 사용해보기</a></p>\n<ul>\n<li><a href=\"/babel/#1-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%A0%84-%EC%A4%80%EB%B9%84\">1. 사용하기 전 준비</a></li>\n<li><a href=\"/babel/#2-babelpreset-env%EB%8A%94-%EB%AD%90%EC%A7%80\">2. @babel/preset-env는 뭐지?</a></li>\n<li><a href=\"/babel/#3-npm-script%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4-%ED%8A%B8%EB%9E%9C%EC%8A%A4%ED%8C%8C%EC%9D%BC%EB%A7%81-%ED%95%98%EA%B8%B0\">3. npm script를 사용해 트랜스파일링 하기</a></li>\n</ul>\n</li>\n</ul>","fields":{"slug":"/babel/"},"frontmatter":{"title":"Babel","date":"Aug 10, 2020","tags":["JavaScript","ES6"],"keywords":["babel","es6","javascript"],"update":"Jan 01, 0001"}}},"pageContext":{"slug":"/babel/","series":[],"lastmod":"2020-08-10"}},"staticQueryHashes":["2027115977","694178885"]}